package cn.b.sky.form.service;

import cn.b.sky.form.model.BusinessType;
import cn.b.sky.form.model.QueryFieldCondition;
import cn.b.sky.form.model.QueryScreen;

import java.util.List;
import java.util.Map;

/**
 * 
 * <strong>Title : CustomQueryService.java<br></strong>
 * <strong>Package : cn.b.sky.form.service<br></strong>
 * <strong>Description : </strong>自定义查询接口<br> 
 * <strong>Create on : 2016年11月23日 下午6:10:17<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人|修改日期|修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface CustomQueryService {

  /**
   * 
   * <strong>Title : queryRows<br></strong>
   * <strong>Description : </strong>自定义查询业务表<br> 
   * <strong>Create on : 2016年11月23日 下午6:12:51<br></strong>
   * <p>
   * @param tableName 表名
   * @param selectFields 待查询字段
   * @param whereConditions 查询条件列表
   * @param orderBy 排序字段
   * @param startRow 开始行
   * @param pageSize 分页大小 
   * @return
   *  Map<String,Object>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public Map<String,Object> queryRows(String tableName, String selectFields, List<QueryFieldCondition> whereConditions, String orderBy, int startRow, int pageSize);
  
  /**
   * 
   * <strong>Title : getRowsCount<br></strong>
   * <strong>Description : </strong>获得自定义查询的总结果数<br> 
   * <strong>Create on : 2016年12月7日 下午2:36:23<br></strong>
   * <p>
   * @param tableName
   * @param whereConditions
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int getRowsCount(String tableName, List<QueryFieldCondition> whereConditions);
  
  /**
   * 
   * <strong>Title : selectQueryScreen<br></strong>
   * <strong>Description : </strong>查询自定义查询界面<br> 
   * <strong>Create on : 2016年11月25日 下午4:24:43<br></strong>
   * <p>
   * @param siteCode
   * @param businessType
   * @param screenName
   * @param createUser
   * @return
   * QueryScreen
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public QueryScreen selectQueryScreen(String siteCode, String businessType, String screenName, String createUser);
  
  /**
   * 
   * <strong>Title : updateQueryScreen<br></strong>
   * <strong>Description : </strong>更新自定义查询界面<br> 
   * <strong>Create on : 2016年11月25日 下午4:25:23<br></strong>
   * <p>
   * @param queryScreen
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateQueryScreen(QueryScreen queryScreen);
  
  /**
   * 
   * <strong>Title : getQueryTree<br></strong>
   * <strong>Description : </strong>获取自定义查询树<br> 
   * <strong>Create on : 2016年12月5日 上午9:51:43<br></strong>
   * <p>
   * @param siteCode
   * @param createUser
   * @return
   * List<BusinessType>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<BusinessType> getQueryTree(String siteCode, String createUser);
  
  /**
   * 
   * <strong>Title : insertQueryScreen<br></strong>
   * <strong>Description : </strong>新增自定义查询<br> 
   * <strong>Create on : 2016年12月5日 下午5:21:18<br></strong>
   * <p>
   * @param queryScreen
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertQueryScreen(QueryScreen queryScreen);
  
  /**
   * 
   * <strong>Title : updateQueryScreenName<br></strong>
   * <strong>Description : </strong>重命名<br> 
   * <strong>Create on : 2016年12月7日 上午9:49:19<br></strong>
   * <p>
   * @param queryScreen
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateQueryScreenName(QueryScreen queryScreen);
  
  /**
   * 
   * <strong>Title : deleteQueryScreen<br></strong>
   * <strong>Description : </strong>删除自定义查询<br> 
   * <strong>Create on : 2016年12月7日 上午10:50:07<br></strong>
   * <p>
   * @param siteCode
   * @param businessType
   * @param screenName
   * @param createUser
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteQueryScreen(String siteCode, String businessType, String screenName, String createUser);
}
